<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      console.log(fn3);
      /*
        1.2区别
        1的方法会下生命，再使用代码之前就可以访问到，
        而2的方法需要同步到当前表达式才会被解析，且未解析之前无法访问到,（可以理解为var、 与let  存在变量提升）
        */

      // console.log(fn2)
      // console.log(fn3)
      //三种创建函数方式
      function fn() {} // 1函数声明
      let fn2 = function () {}; //2函数表达式，又叫字面量
      let fn3 = new fn(); // 3构造函数

      console.log(fn);
      console.log(fn2);
    </script>

    <script>
      //创建对象的方法
      //1.字面量
      let a1 = { name: 'a' };
      let a11 = new Object({ name: 'a11' });
      console.log(a1, a11);
      //2.构造函数
      let b = function (name) {
        this.name = name;
      };
      let b2 = new b('b');
      console.log(b, b2);
      //3.Object.create
      let c = { name: 'c' };
      c2 = Object.create(c);
      console.log(c, c2);
    </script>
  </body>
</html>
